home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / sgml / dtd / fo.dtd < prev    next >
Extensible Markup Language  |  2004-01-31  |  59KB  |  1,584 lines

  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2.  
  3. <!-- 
  4.    This DTD has been developed in order to validate XSL FO documents 
  5.    conformant to XSL Recommendation of October 15, 2001. The namespace 
  6.    prefix is 
  7.    
  8.      xmlns:fo="http://www.w3.org/1999/XSL/Format".
  9.  
  10.    This DTD also makes provision for few extensions to XSL Rec, put 
  11.    into a separate namespace: 
  12.  
  13.      xmlns:rx="http://www.renderx.com/XSL/Extensions".
  14.  
  15.    Please e-mail your comments to Nikolai Grigoriev <grig@renderx.com>
  16.  
  17.    ? RenderX, 1999-2002. 
  18.  
  19. -->
  20.  
  21.  
  22. <!-- *******************************************************************
  23.  
  24. This DTD was written in mind to validate testcases for the new XSL FO 
  25. draft. Therefore, it is restrictive with respect to the spec: some rare 
  26. XSL FO features have been dropped in order to validate others more 
  27. reliably. Unless a document intentionally uses some of the functionality 
  28. listed below in the introductory notes, it shall be conformant to this 
  29. DTD in order to be a valid XSL FO document. 
  30.  
  31. INTRODUCTORY NOTES
  32.  
  33. 1. XSL FO are hard to validate by a DTD: attributes are universally 
  34. inheritable due to the adoption of the 'inherit' value from CSS2; and 
  35. even for the content model, presence of universal wrappers like fo:wrapper 
  36. makes it impossible to trace a neat distinction between inline-level and 
  37. block-level content. Therefore, this version of the DTD cannot reliably
  38. detect inconsistencies in attribute sets: real checks are performed 
  39. only for empty inline elements and top-level elements (fo:layout-master-set 
  40. and its descendants). 
  41.  
  42. 2. The contents of the fo:instream-foreign-object element is hardvired to
  43. be an SVG graphic. To validate it, this DTD includes an SVG DTD as an 
  44. external entity.
  45.  
  46. DEVIATIONS FROM THE DRAFT
  47.  
  48. 1. Content model for <fo:layout-master-set> is made more strict:
  49. at least one fo:simple-page-master should be present. (I think this 
  50. is more like a correction to the spec, rather than a deviation from it).
  51.  
  52. 2. In XSL 1.0, page and region-body margins may be expressed in terms
  53. of space-*. This does not make any sense, as far as no stacked 
  54. constraint may occur. For this reason, I have disabled spaces
  55. in this context, leaving only plain old CSS margins.
  56.  
  57. 3. Attributes of elements inside fo:layout-master-set may have a value 
  58. of 'inherit'. However, I have disabled the occurrence of such attributes
  59. on parent elements: inheriting them buys us little in terms of 
  60. conciseness, but is error-prone in the initial phase.
  61.  
  62. 4. Table-omit-{header|footer}-at-break is added a value of 'inherit',
  63. to align it with the rest of table attributes. (If table-layout may have
  64. it, why these two should not?)
  65.  
  66. 5. Text-align has a closed list of values, neglecting the <string> value
  67. type. The reason is practical: many stylesheet writers are used to write 
  68. "centered" and "justified", whereas the correct values for this version 
  69. of the draft are "center" and "justify"; catching this error in the DTD
  70. turned out to be useful. Moreover, <string> values are poorly described 
  71. in the draft (nothing but a reference to CSS2), and are unlikely to be 
  72. implemented soon. (Ultimate reason: changing the attribute value back to 
  73. CDATA is a matter of few seconds ;-)).
  74.  
  75. 6. Only basic values for writing-mode are included. 
  76.  
  77. 7. "Reference-orientation" is given <angle> values, besides numeric
  78.    ones described in the Recommendation. 
  79.  
  80. 8. Several extension elements and properties are added to enable 
  81. functionality missing from the Recommendation:
  82.  
  83. rx:background-content-height (attribute)
  84. rx:background-content-width (attribute)
  85. rx:background-content-type (attribute)
  86. rx:background-scaling (attribute)
  87.  
  88.    These properties are exact analogs of 'content-height', 'content-width'
  89.    'content-type', and 'scaling' but apply to the background image.
  90.  
  91. rx:outline (element)
  92. rx:bookmark (element)
  93. rx:bookmark-label (element)
  94.  
  95.    These elements implement PDF bookmarks.
  96.  
  97. rx:meta-info (element)
  98. rx:meta-field (element)
  99.  
  100.    These elements pass meta-information about the document.
  101.  
  102. rx:page-device (element) 
  103.  
  104.    This element permits passing parameters to setpagedevice
  105.    operator in PostScript
  106.  
  107. rx:flow-section (element) 
  108.  
  109.    This element permits setting arbitrary number of columns
  110.    in a sigle page.
  111.  
  112. rx:key (attribute)
  113. rx:page-index (element)
  114.  
  115.    These elements implement page number lists in indexes.
  116.  
  117.  
  118. ******************************************************************** -->
  119.  
  120. <!-- *************************************************************** -->
  121. <!-- Include external DTDs for foreign objects                       -->
  122. <!-- *************************************************************** -->
  123.  
  124. <!-- Commented out for evaluation version 
  125.  
  126. <!ENTITY % instream-foreign-object-dtd SYSTEM "instream-foreign-object.dtd">
  127.  
  128. %instream-foreign-object-dtd; 
  129.  
  130. -->
  131.  
  132. <!-- *************************************************************** -->
  133. <!-- Entity definitions for groups of formatting objects             -->
  134. <!-- *************************************************************** -->
  135.  
  136. <!ENTITY % basic-inlines "
  137.     fo:bidi-override
  138.   | fo:character
  139.   | fo:external-graphic
  140.   | fo:instream-foreign-object  
  141.   | fo:inline
  142.   | fo:inline-container
  143.   | fo:leader
  144.   | fo:page-number
  145.   | fo:page-number-citation
  146.   | fo:basic-link
  147.   | fo:multi-toggle
  148.   | rx:pinpoint
  149.   | rx:page-index
  150. ">
  151.  
  152. <!ENTITY % basic-blocks "
  153.     fo:block
  154.   | fo:block-container
  155.   | fo:table-and-caption
  156.   | fo:table
  157.   | fo:list-block
  158. ">
  159.  
  160. <!ENTITY % out-of-lines "
  161.     fo:footnote
  162.   | fo:float
  163. ">
  164.  
  165. <!ENTITY % wrappers "
  166.     fo:multi-switch
  167.   | fo:multi-properties
  168.   | fo:wrapper 
  169.   | fo:marker
  170.   | fo:retrieve-marker
  171. ">
  172.  
  173. <!ENTITY % inlines " 
  174.     #PCDATA 
  175.   | %basic-inlines; 
  176.   | %out-of-lines; 
  177.   | %wrappers;
  178. ">
  179.  
  180. <!ENTITY % blocks " 
  181.     %basic-blocks; 
  182.   | %out-of-lines; 
  183.   | %wrappers;
  184. ">
  185.  
  186. <!ENTITY % mixed-level " 
  187.     #PCDATA 
  188.   | %basic-inlines; 
  189.   | %basic-blocks; 
  190.   | %out-of-lines; 
  191.   | %wrappers;
  192. ">
  193.  
  194.  
  195. <!-- *************************************************************** -->
  196. <!-- Entity definitions for common groups of properties              -->
  197. <!-- This grouping reflects properties cooccurrence, rather than     -->
  198. <!-- property semantics. It does not correspond to grouping in the   -->
  199. <!-- draft.                                                          -->
  200. <!-- *************************************************************** -->
  201.  
  202. <!-- Accessibility Properties                                        -->
  203. <!ENTITY % accessibility-properties "
  204.   source-document  CDATA  #IMPLIED
  205.   role  CDATA  #IMPLIED
  206. ">
  207.  
  208. <!-- Relative Position Properties                                    -->
  209. <!-- 'position' shorthand property also makes part of this group     -->
  210. <!ENTITY % relative-position-properties "
  211.   relative-position  ( auto | static | relative | inherit )  #IMPLIED
  212.   position  ( static | relative | absolute | fixed | inherit)  #IMPLIED
  213.   top  CDATA  #IMPLIED
  214.   right  CDATA  #IMPLIED
  215.   bottom  CDATA  #IMPLIED
  216.   left  CDATA  #IMPLIED
  217. ">
  218.  
  219. <!-- Absolute or Relative Position Properties                       -->
  220. <!-- There is no object that can be positioned only absolutely.     -->
  221. <!-- Therefore, absolute and relative positioning properties are    -->
  222. <!-- grouped together                                               -->
  223. <!ENTITY % absolute-or-relative-position-properties "
  224.   absolute-position  ( auto | absolute | fixed | inherit )  #IMPLIED
  225.   %relative-position-properties;
  226. ">
  227.  
  228.  
  229. <!-- Aural Properties                                                -->
  230. <!-- 'cue' and 'pause' shorthand properties are also included        -->
  231. <!ENTITY % aural-properties "
  232.   azimuth  CDATA  #IMPLIED
  233.   cue  CDATA  #IMPLIED
  234.   cue-after  CDATA  #IMPLIED
  235.   cue-before  CDATA  #IMPLIED
  236.   elevation  CDATA  #IMPLIED
  237.   pause  CDATA  #IMPLIED
  238.   pause-after  CDATA  #IMPLIED
  239.   pause-before  CDATA  #IMPLIED
  240.   pitch  CDATA  #IMPLIED
  241.   pitch-range  CDATA  #IMPLIED
  242.   play-during  CDATA  #IMPLIED
  243.   richness  CDATA  #IMPLIED
  244.   speak  ( normal | none | spell-out | inherit )  #IMPLIED
  245.   speak-header  ( once | always | inherit ) #IMPLIED
  246.   speak-numeral  ( digits | continuous | inherit )  #IMPLIED
  247.   speak-punctuation  ( code | none | inherit )  #IMPLIED
  248.   speech-rate  CDATA  #IMPLIED
  249.   stress  CDATA  #IMPLIED
  250.   voice-family  CDATA  #IMPLIED
  251.   volume  CDATA  #IMPLIED
  252. ">
  253.  
  254.  
  255. <!-- Common Border, Padding, and Background Properties               -->
  256. <!-- Relative shorthand properties are also included                 -->
  257. <!ENTITY % border-padding-background-properties "
  258.   background  CDATA  #IMPLIED
  259.   background-attachment  ( scroll | fixed | inherit )  #IMPLIED
  260.   background-color  CDATA  #IMPLIED
  261.   background-image  CDATA  #IMPLIED
  262.   background-position  CDATA  #IMPLIED
  263.   background-position-vertical  CDATA  #IMPLIED
  264.   background-position-horizontal  CDATA  #IMPLIED
  265.   background-repeat  ( repeat | repeat-x | repeat-y 
  266.                      | no-repeat | inherit ) #IMPLIED
  267.   rx:background-content-type  CDATA  #IMPLIED
  268.   rx:background-content-height  CDATA  #IMPLIED
  269.   rx:background-content-width  CDATA  #IMPLIED
  270.   rx:background-scaling  ( uniform | non-uniform)  #IMPLIED
  271.   border  CDATA  #IMPLIED
  272.   border-after-color  CDATA  #IMPLIED
  273.   border-after-style  ( none | hidden | dotted | dashed 
  274.                       | solid | double | groove | ridge 
  275.                       | inset | outset | inherit )  #IMPLIED
  276.   border-after-width  CDATA  #IMPLIED
  277.   border-after-width.length  CDATA  #IMPLIED
  278.   border-after-width.conditionality ( discard | retain)  #IMPLIED
  279.   border-before-color  CDATA  #IMPLIED
  280.   border-before-style  ( none | hidden | dotted | dashed 
  281.                        | solid | double | groove | ridge 
  282.                        | inset | outset | inherit )   #IMPLIED
  283.   border-before-width  CDATA  #IMPLIED
  284.   border-before-width.length  CDATA  #IMPLIED
  285.   border-before-width.conditionality ( discard | retain)  #IMPLIED
  286.   border-bottom  CDATA  #IMPLIED
  287.   border-bottom-color  CDATA  #IMPLIED
  288.   border-bottom-style  ( none | hidden | dotted | dashed 
  289.                        | solid | double | groove | ridge 
  290.                        | inset | outset | inherit )   #IMPLIED
  291.   border-bottom-width  CDATA  #IMPLIED
  292.   border-bottom-width.length  CDATA  #IMPLIED
  293.   border-bottom-width.conditionality ( discard | retain)  #IMPLIED
  294.   border-color  CDATA  #IMPLIED
  295.   border-end-color  CDATA  #IMPLIED
  296.   border-end-style  ( none | hidden | dotted | dashed 
  297.                     | solid | double | groove | ridge 
  298.                     | inset | outset | inherit )   #IMPLIED
  299.   border-end-width  CDATA  #IMPLIED
  300.   border-end-width.length  CDATA  #IMPLIED
  301.   border-end-width.conditionality ( discard | retain)  #IMPLIED
  302.   border-left  CDATA  #IMPLIED
  303.   border-left-color  CDATA  #IMPLIED
  304.   border-left-style  ( none | hidden | dotted | dashed 
  305.                      | solid | double | groove | ridge 
  306.                      | inset | outset | inherit )   #IMPLIED
  307.   border-left-width  CDATA  #IMPLIED
  308.   border-left-width.length  CDATA  #IMPLIED
  309.   border-left-width.conditionality ( discard | retain)  #IMPLIED
  310.   border-right  CDATA  #IMPLIED
  311.   border-right-color  CDATA  #IMPLIED
  312.   border-right-style  ( none | hidden | dotted | dashed 
  313.                       | solid | double | groove | ridge 
  314.                       | inset | outset | inherit )   #IMPLIED
  315.   border-right-width  CDATA  #IMPLIED
  316.   border-right-width.length  CDATA  #IMPLIED
  317.   border-right-width.conditionality ( discard | retain)  #IMPLIED
  318.   border-start-color  CDATA  #IMPLIED
  319.   border-start-style  ( none | hidden | dotted | dashed 
  320.                       | solid | double | groove | ridge 
  321.                       | inset | outset | inherit )   #IMPLIED
  322.   border-start-width  CDATA  #IMPLIED
  323.   border-start-width.length  CDATA  #IMPLIED
  324.   border-start-width.conditionality ( discard | retain)  #IMPLIED
  325.   border-style CDATA #IMPLIED
  326.   border-top  CDATA  #IMPLIED
  327.   border-top-color  CDATA  #IMPLIED
  328.   border-top-style  ( none | hidden | dotted | dashed 
  329.                     | solid | double | groove | ridge 
  330.                     | inset | outset | inherit )   #IMPLIED
  331.   border-top-width  CDATA  #IMPLIED
  332.   border-top-width.length  CDATA  #IMPLIED
  333.   border-top-width.conditionality ( discard | retain)  #IMPLIED
  334.   border-width  CDATA  #IMPLIED
  335.   padding  CDATA  #IMPLIED
  336.   padding-after  CDATA  #IMPLIED
  337.   padding-after.length  CDATA  #IMPLIED
  338.   padding-after.conditionality ( discard | retain)  #IMPLIED
  339.   padding-before  CDATA  #IMPLIED
  340.   padding-before.length  CDATA  #IMPLIED
  341.   padding-before.conditionality ( discard | retain)  #IMPLIED
  342.   padding-bottom  CDATA  #IMPLIED
  343.   padding-bottom.length  CDATA  #IMPLIED
  344.   padding-bottom.conditionality ( discard | retain)  #IMPLIED
  345.   padding-end  CDATA  #IMPLIED
  346.   padding-end.length  CDATA  #IMPLIED
  347.   padding-end.conditionality ( discard | retain)  #IMPLIED
  348.   padding-left  CDATA  #IMPLIED
  349.   padding-left.length  CDATA  #IMPLIED
  350.   padding-left.conditionality ( discard | retain)  #IMPLIED
  351.   padding-right  CDATA  #IMPLIED
  352.   padding-right.length  CDATA  #IMPLIED
  353.   padding-right.conditionality ( discard | retain)  #IMPLIED
  354.   padding-start  CDATA  #IMPLIED
  355.   padding-start.length  CDATA  #IMPLIED
  356.   padding-start.conditionality ( discard | retain)  #IMPLIED
  357.   padding-top  CDATA  #IMPLIED
  358.   padding-top.length  CDATA  #IMPLIED
  359.   padding-top.conditionality ( discard | retain)  #IMPLIED
  360. ">
  361.  
  362. <!-- Border Precedence Properties for tables                         -->
  363. <!ENTITY % border-precedence-properties "
  364.   border-after-precedence  CDATA  #IMPLIED
  365.   border-before-precedence  CDATA  #IMPLIED
  366.   border-end-precedence  CDATA  #IMPLIED
  367.   border-start-precedence  CDATA  #IMPLIED
  368. ">
  369.  
  370. <!-- Box Size Properties                                             -->
  371. <!ENTITY % box-size-properties "
  372.   height  CDATA  #IMPLIED
  373.   min-height  CDATA  #IMPLIED
  374.   max-height  CDATA  #IMPLIED
  375.   width  CDATA  #IMPLIED
  376.   min-width  CDATA  #IMPLIED
  377.   max-width  CDATA  #IMPLIED
  378.   inline-progression-dimension  CDATA  #IMPLIED
  379.   inline-progression-dimension.minimum  CDATA  #IMPLIED
  380.   inline-progression-dimension.optimum  CDATA  #IMPLIED
  381.   inline-progression-dimension.maximum  CDATA  #IMPLIED
  382.   block-progression-dimension  CDATA  #IMPLIED
  383.   block-progression-dimension.minimum  CDATA  #IMPLIED
  384.   block-progression-dimension.optimum  CDATA  #IMPLIED
  385.   block-progression-dimension.maximum  CDATA  #IMPLIED
  386. ">
  387.  
  388. <!-- Common Area Properties                                          -->
  389. <!ENTITY % area-properties "
  390.   clip  CDATA  #IMPLIED
  391.   overflow  ( visible | hidden | scroll | auto 
  392.             | error-if-overflow | inherit )  #IMPLIED
  393.   display-align  ( auto | before | center | after | inherit )  #IMPLIED
  394.   reference-orientation  ( 0 | 90 | 180 | 270 | -90 | -180 | -270  
  395.                          | 0deg  | 90deg   | 180deg  | 270deg 
  396.                          | -90deg | -180deg | -270deg | inherit )  #IMPLIED
  397.   writing-mode  ( lr-tb | rl-tb | tb-rl | lr | rl | tb | inherit ) #IMPLIED
  398. ">
  399.  
  400.  
  401. <!-- Common Font Properties                                          -->
  402. <!-- 'font' shorthand property is also included                      -->
  403. <!ENTITY % font-properties "
  404.   font  CDATA  #IMPLIED
  405.   font-selection-strategy  (auto | character-by-character | inherit)   #IMPLIED
  406.   font-family  CDATA  #IMPLIED
  407.   font-size  CDATA  #IMPLIED
  408.   font-size-adjust  CDATA  #IMPLIED
  409.   font-stretch  (normal | wider | narrower 
  410.                | ultra-condensed | extra-condensed | condensed
  411.                | semi-condensed | semi-expanded | expanded 
  412.                | extra-expanded | ultra-expanded | inherit) #IMPLIED
  413.   font-style  ( normal | italic | oblique | backslant | inherit)  #IMPLIED
  414.   font-variant  ( normal | small-caps | inherit )  #IMPLIED
  415.   font-weight  (normal | bold | bolder | lighter | inherit 
  416.               | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900) #IMPLIED
  417. ">
  418.  
  419. <!-- Common Hyphenation Properties - Inline                          -->
  420. <!-- 'xml:lang' shorthand property is also included                  -->
  421. <!ENTITY % hyphenation-properties-inline "
  422.   country  CDATA  #IMPLIED
  423.   language  CDATA  #IMPLIED
  424.   script  CDATA  #IMPLIED
  425.   xml:lang  CDATA  #IMPLIED
  426.   hyphenate  ( false | true | inherit )  #IMPLIED
  427.   hyphenation-character  CDATA  #IMPLIED
  428.   hyphenation-push-character-count  CDATA  #IMPLIED
  429.   hyphenation-remain-character-count  CDATA  #IMPLIED
  430. ">
  431.  
  432. <!-- Common Hyphenation Properties - Block                           -->
  433.  
  434. <!ENTITY % hyphenation-properties-block "
  435.   hyphenation-keep  ( auto | column | page | inherit )  #IMPLIED
  436.   hyphenation-ladder-count  CDATA  #IMPLIED
  437.   %hyphenation-properties-inline;
  438. ">
  439.  
  440.  
  441. <!-- Common CSS Margin Properties                                    -->
  442. <!-- 'margin' shorthand property is also included                    -->
  443. <!ENTITY % margin-properties-CSS "
  444.   margin  CDATA  #IMPLIED
  445.   margin-bottom  CDATA  #IMPLIED
  446.   margin-left  CDATA  #IMPLIED
  447.   margin-right  CDATA  #IMPLIED
  448.   margin-top  CDATA  #IMPLIED
  449. ">
  450.  
  451. <!-- Common Margin Properties - Block                                -->
  452. <!ENTITY % margin-properties-block "
  453.   %margin-properties-CSS;
  454.   space-after  CDATA  #IMPLIED
  455.   space-after.minimum  CDATA  #IMPLIED
  456.   space-after.optimum  CDATA  #IMPLIED
  457.   space-after.maximum  CDATA  #IMPLIED
  458.   space-after.precedence  CDATA  #IMPLIED
  459.   space-after.conditionality  ( retain | discard )  #IMPLIED
  460.   space-before  CDATA  #IMPLIED
  461.   space-before.minimum  CDATA  #IMPLIED
  462.   space-before.optimum  CDATA  #IMPLIED
  463.   space-before.maximum  CDATA  #IMPLIED
  464.   space-before.precedence  CDATA  #IMPLIED
  465.   space-before.conditionality  ( retain | discard )  #IMPLIED
  466.   start-indent  CDATA  #IMPLIED
  467.   end-indent  CDATA  #IMPLIED
  468. ">
  469.  
  470. <!-- Common Margin Properties - Inline                               -->
  471. <!ENTITY % margin-properties-inline "
  472.   %margin-properties-block;
  473.   space-start  CDATA  #IMPLIED
  474.   space-start.minimum  CDATA  #IMPLIED
  475.   space-start.optimum  CDATA  #IMPLIED
  476.   space-start.maximum  CDATA  #IMPLIED
  477.   space-start.precedence  CDATA  #IMPLIED
  478.   space-start.conditionality  ( retain | discard )  #IMPLIED
  479.   space-end  CDATA  #IMPLIED
  480.   space-end.minimum  CDATA  #IMPLIED
  481.   space-end.optimum  CDATA  #IMPLIED
  482.   space-end.maximum  CDATA  #IMPLIED
  483.   space-end.precedence  CDATA  #IMPLIED
  484.   space-end.conditionality  ( retain | discard )  #IMPLIED
  485. ">
  486.  
  487. <!-- Area Alignment Properties - inline                              -->
  488. <!-- 'vertical-align' shorthand is added                             -->                          
  489. <!ENTITY % area-alignment-properties-inline "
  490.   alignment-adjust  CDATA  #IMPLIED
  491.   alignment-baseline  ( auto | baseline | before-edge | text-before-edge 
  492.                        | middle | central | after-edge | text-after-edge 
  493.                        | top | text-top | bottom | text-bottom
  494.                        | ideographic | alphabetic | hanging 
  495.                        | mathematical | inherit )  #IMPLIED
  496.   baseline-shift  CDATA  #IMPLIED
  497.   dominant-baseline  ( auto | use-script | no-change 
  498.                      | reset-size | ideographic | alphabetic 
  499.                      | hanging | mathematical | central | middle 
  500.                      | text-after-edge | text-before-edge |inherit )  #IMPLIED
  501.   vertical-align  CDATA  #IMPLIED
  502. ">
  503.  
  504. <!-- Line Height Properties                                         -->
  505.  
  506. <!ENTITY % line-height-properties "
  507.   line-height  CDATA  #IMPLIED
  508.   line-height.minimum  CDATA  #IMPLIED
  509.   line-height.optimum  CDATA  #IMPLIED
  510.   line-height.maximum  CDATA  #IMPLIED
  511.   line-height.precedence  CDATA  #IMPLIED
  512.   line-height.conditionality  ( retain | discard )  #IMPLIED
  513.   line-height-shift-adjustment  CDATA  #IMPLIED
  514. ">
  515.  
  516. <!-- Line Related Properties                                         -->
  517. <!-- [!] <string> values are temporarily excluded from text-align    -->
  518.  
  519. <!ENTITY % line-related-properties "
  520.   text-align  ( start | center | end | justify 
  521.               | inside | outside | left | right | inherit )  #IMPLIED
  522.   text-align-last  ( relative | start | center | end | justify 
  523.                    | inside | outside | left | right | inherit )  #IMPLIED
  524.   text-indent  CDATA  #IMPLIED
  525.   last-line-end-indent  CDATA  #IMPLIED
  526.   line-stacking-strategy  ( line-height | font-height 
  527.                           | max-height | inherit )  #IMPLIED
  528.   linefeed-treatment  ( ignore | preserve | treat-as-space 
  529.                       | treat-as-zero-width-space | inherit )  #IMPLIED
  530.   white-space  ( normal | pre | nowrap | inherit )  #IMPLIED
  531.   white-space-treatment  ( ignore | preserve  
  532.                          | ignore-if-before-linefeed | ignore-if-after-linefeed 
  533.                          | ignore-if-surrounding-linefeed | inherit )  #IMPLIED
  534.   white-space-collapse  ( false | true | inherit )  #IMPLIED
  535.   wrap-option  ( no-wrap | wrap | inherit )  #IMPLIED
  536.   unicode-bidi  ( normal | embed | bidi-override | inherit )  #IMPLIED
  537.   direction  ( ltr | rtl | inherit )  #IMPLIED
  538. ">
  539.  
  540.  
  541. <!-- Character Properties                                            -->
  542.  
  543. <!ENTITY % character-properties "
  544.   letter-spacing  CDATA  #IMPLIED
  545.   letter-spacing.minimum  CDATA  #IMPLIED
  546.   letter-spacing.optimum  CDATA  #IMPLIED
  547.   letter-spacing.maximum  CDATA  #IMPLIED
  548.   letter-spacing.precedence  CDATA  #IMPLIED
  549.   letter-spacing.conditionality  ( retain | discard )  #IMPLIED
  550.   word-spacing  CDATA  #IMPLIED
  551.   word-spacing.minimum  CDATA  #IMPLIED
  552.   word-spacing.optimum  CDATA  #IMPLIED
  553.   word-spacing.maximum  CDATA  #IMPLIED
  554.   word-spacing.precedence  CDATA  #IMPLIED
  555.   word-spacing.conditionality  ( retain | discard )  #IMPLIED
  556.   treat-as-word-space  ( auto | true | false | inherit )  #IMPLIED
  557.   text-decoration  NMTOKENS  #IMPLIED
  558.   score-spaces  ( true | false | inherit )  #IMPLIED
  559.   text-shadow  CDATA  #IMPLIED
  560.   text-transform  ( capitalize | uppercase | lowercase 
  561.                   | none | inherit )  #IMPLIED
  562.   suppress-at-line-break  ( auto | suppress | retain | inherit )  #IMPLIED
  563.   text-altitude  CDATA  #IMPLIED
  564.   text-depth  CDATA  #IMPLIED
  565.   glyph-orientation-horizontal ( 0 | 90 | 180 | 270 | -90 | -180 | -270  
  566.                              | 0deg  | 90deg   | 180deg  | 270deg 
  567.                              |-90deg | -180deg | -270deg | inherit )  #IMPLIED
  568.   glyph-orientation-vertical ( 0 | 90 | 180 | 270 | -90 | -180 | -270  
  569.                              | 0deg  | 90deg   | 180deg  | 270deg 
  570.                              |-90deg | -180deg | -270deg | inherit )  #IMPLIED
  571.   %font-properties;
  572.   %line-height-properties;
  573. ">
  574.  
  575.  
  576. <!-- Common Keeps and Breaks Properties - Atomic objects             -->
  577. <!-- 'page-break-*' shorthand properties are also included           -->
  578. <!ENTITY % keeps-and-breaks-properties-atomic "
  579.   break-after  ( auto | column | page 
  580.                | even-page | odd-page | inherit )  #IMPLIED
  581.   break-before  ( auto | column | page 
  582.                 | even-page | odd-page | inherit )  #IMPLIED
  583.   keep-with-next  CDATA  #IMPLIED
  584.   keep-with-next.within-line  CDATA  #IMPLIED
  585.   keep-with-next.within-column  CDATA  #IMPLIED
  586.   keep-with-next.within-page  CDATA  #IMPLIED
  587.   keep-with-previous  CDATA  #IMPLIED
  588.   keep-with-previous.within-line  CDATA  #IMPLIED
  589.   keep-with-previous.within-column  CDATA  #IMPLIED
  590.   keep-with-previous.within-page  CDATA  #IMPLIED
  591.   page-break-after  ( auto | always | avoid 
  592.                     | left | right | inherit )  #IMPLIED
  593.   page-break-before  ( auto | always | avoid 
  594.                      | left | right | inherit )  #IMPLIED
  595. ">
  596.  
  597. <!-- Common Keeps and Breaks Properties - Inline                     -->
  598. <!-- 'page-break-inside' shorthand property is also included         -->
  599. <!ENTITY % keeps-and-breaks-properties-inline "
  600.   %keeps-and-breaks-properties-atomic;
  601.   keep-together  CDATA  #IMPLIED
  602.   keep-together.within-line  CDATA  #IMPLIED
  603.   keep-together.within-column  CDATA  #IMPLIED
  604.   keep-together.within-page  CDATA  #IMPLIED
  605.   page-break-inside  ( avoid | auto | inherit )  #IMPLIED
  606. ">
  607.  
  608. <!-- Common Keeps and Breaks Properties - Block                      -->
  609. <!ENTITY % keeps-and-breaks-properties-block "
  610.   %keeps-and-breaks-properties-inline;
  611.   orphans  CDATA  #IMPLIED
  612.   widows  CDATA  #IMPLIED
  613. ">
  614.  
  615.  
  616. <!-- Leader and Rule Properties                                      -->
  617.  
  618. <!ENTITY % leader-properties "
  619.   leader-alignment  ( none | reference-area | page | inherit )  #IMPLIED
  620.   leader-pattern  ( space | rule | dots 
  621.                   | use-content | inherit )  #IMPLIED
  622.   leader-pattern-width  CDATA  #IMPLIED
  623.   leader-length  CDATA  #IMPLIED
  624.   leader-length.minimum  CDATA  #IMPLIED
  625.   leader-length.optimum  CDATA  #IMPLIED
  626.   leader-length.maximum  CDATA  #IMPLIED
  627.   rule-style  ( none | dotted | dashed | solid | double 
  628.               | groove | ridge | inherit )  #IMPLIED
  629.   rule-thickness  CDATA  #IMPLIED
  630. ">
  631.  
  632. <!-- Table Properties                                                  -->
  633. <!-- 'border-spacing' shorthand property is also included              -->
  634. <!-- 'inherit' property added to table-omit-...er-at-break             -->
  635.  
  636. <!ENTITY % table-properties "
  637.   border-collapse  ( collapse | collapse-with-precedence | separate | inherit )  #IMPLIED
  638.   border-spacing  CDATA  #IMPLIED
  639.   border-separation  CDATA  #IMPLIED
  640.   border-separation.inline-progression-direction  CDATA  #IMPLIED
  641.   border-separation.block-progression-direction  CDATA  #IMPLIED
  642.   caption-side  ( before | after | start | end 
  643.                 | top | bottom | left | right | inherit )  #IMPLIED
  644.   empty-cells  ( show | hide | inherit )  #IMPLIED
  645.   table-layout  ( auto | fixed | inherit )  #IMPLIED
  646.   table-omit-header-at-break  ( true | false | inherit )  #IMPLIED
  647.   table-omit-footer-at-break  ( true | false | inherit )  #IMPLIED
  648. ">
  649.  
  650. <!-- List Properties                                                  -->
  651.  
  652. <!ENTITY % list-properties "
  653.   provisional-distance-between-starts  CDATA  #IMPLIED
  654.   provisional-label-separation  CDATA  #IMPLIED
  655. ">
  656.  
  657. <!-- Float Properties                                                 -->
  658.  
  659. <!ENTITY % float-properties "
  660.   float  ( before | start | end | left | right | none | inherit )  #IMPLIED
  661.   clear  ( start | end | left | right | both | none | inherit )  #IMPLIED
  662.   intrusion-displace ( auto | none | line | indent | block | inherit ) #IMPLIED
  663. ">
  664.  
  665. <!-- Visibility Properties                                            -->
  666.  
  667. <!ENTITY % visibility-properties "
  668.   visibility  ( visible | hidden | collapse | inherit )  #IMPLIED
  669.   z-index  CDATA  #IMPLIED
  670. ">
  671.  
  672.  
  673. <!-- =============================================================== -->
  674. <!-- Set of all inheritable properties. This includes attributes     -->
  675. <!-- marked as inheritable in the spec, as well as all features that -->
  676. <!-- may assume a value of "inherit" (because all such features are  -->
  677. <!-- also permitted at parent elements). By XSL design, this set     -->
  678. <!-- comprises nearly all attributes.                                -->
  679. <!-- =============================================================== -->
  680.  
  681. <!ENTITY % inheritable-properties "   
  682.   color  CDATA  #IMPLIED
  683.   relative-align  ( before | baseline | inherit )  #IMPLIED
  684.   span  ( none | all | inherit )  #IMPLIED 
  685.  
  686.   %accessibility-properties;
  687.   %absolute-or-relative-position-properties;
  688.   %border-padding-background-properties;
  689.   %border-precedence-properties;
  690.   %aural-properties;
  691.   %box-size-properties;
  692.   %margin-properties-inline;
  693.   %area-properties;
  694.   %area-alignment-properties-inline;
  695.   %character-properties;
  696.   %table-properties;
  697.   %list-properties;
  698.   %float-properties;
  699.   %line-related-properties;
  700.   %leader-properties;
  701.   %keeps-and-breaks-properties-block;
  702.   %hyphenation-properties-block;
  703.   %visibility-properties;
  704. ">
  705.  
  706. <!-- =============================================================== -->
  707. <!-- Common property subsets.                                        -->
  708. <!-- =============================================================== -->
  709.  
  710. <!-- Properties for every block that may contain text children       -->
  711.  
  712. <!ENTITY % block-properties "   
  713.   id  CDATA  #IMPLIED
  714.   rx:key  CDATA  #IMPLIED
  715.   %inheritable-properties;
  716. ">
  717.  
  718. <!-- Properties for nonempty inline elements                         -->
  719.  
  720. <!ENTITY % inline-properties "   
  721.   id  CDATA  #IMPLIED
  722.   rx:key  CDATA  #IMPLIED
  723.   %inheritable-properties;
  724. ">
  725.  
  726.  
  727. <!-- Properties for empty inline elements that contain characters    -->
  728.  
  729. <!ENTITY % empty-inline-properties "   
  730.   id  CDATA  #IMPLIED
  731.   rx:key  CDATA  #IMPLIED
  732.   color  CDATA  #IMPLIED
  733.   %accessibility-properties;
  734.   %aural-properties;
  735.   %relative-position-properties;
  736.   %area-alignment-properties-inline;
  737.   %character-properties;
  738.   %border-padding-background-properties;
  739.   %hyphenation-properties-inline;
  740.   %visibility-properties;
  741. ">
  742.  
  743. <!-- Properties for graphical inline elements                        -->
  744.  
  745. <!ENTITY % graphic-properties "   
  746.   id  CDATA  #IMPLIED
  747.   rx:key  CDATA  #IMPLIED
  748.   content-type  CDATA  #IMPLIED
  749.  
  750.   %accessibility-properties;
  751.   %relative-position-properties;
  752.   %aural-properties;
  753.   %border-padding-background-properties;
  754.   %margin-properties-inline;
  755.   %area-alignment-properties-inline;
  756.   %box-size-properties;
  757.   %font-properties;
  758.   %line-height-properties;
  759.   %keeps-and-breaks-properties-atomic;
  760.  
  761.   content-height  CDATA  #IMPLIED
  762.   content-width  CDATA  #IMPLIED
  763.   display-align  ( auto | before | center | after | inherit )  #IMPLIED
  764.   overflow  ( visible | hidden | scroll | auto 
  765.             | error-if-overflow | inherit )  #IMPLIED
  766.   scaling  ( uniform | non-uniform | inherit )  #IMPLIED
  767.   scaling-method  ( auto | integer-pixels 
  768.                   | resample-any-method | inherit )  #IMPLIED
  769.   text-align  ( start | center | end | justify 
  770.               | inside | outside | left | right | inherit )  #IMPLIED
  771. ">
  772.  
  773.  
  774.  
  775. <!-- *************************************************************** -->
  776. <!-- Content models and attributes                                   -->
  777. <!--                                                                 -->
  778. <!-- A. Element structure for top-level elements                     -->
  779. <!-- *************************************************************** -->
  780.  
  781.  
  782. <!-- =============================================================== -->
  783. <!-- Root element. Contains everything, generates nothing. It has an -->
  784. <!-- id, a FO namespace prefix declaration, and other namespace      -->
  785. <!-- declarations if used. It can also bear inheritable properties,  -->
  786. <!-- passed further to fo:flows/fo:static-contents. Inheritable      -->
  787. <!-- properties from fo:layout-master-set are banned in this version -->
  788. <!-- of the DTD.                                                     -->
  789. <!-- =============================================================== -->
  790.  
  791. <!ELEMENT fo:root (
  792.     rx:meta-info?,
  793.     rx:page-device?,
  794.     fo:layout-master-set,
  795.     fo:declarations?,
  796.     rx:outline?,
  797.     fo:page-sequence+
  798.   )
  799. >
  800. <!ATTLIST fo:root
  801.   xmlns:fo  CDATA #REQUIRED
  802.   xmlns:rx  CDATA #IMPLIED
  803.   xmlns:svg CDATA #IMPLIED
  804.   media-usage  ( auto | paginate | bounded-in-one-dimension | unbounded ) #IMPLIED
  805.   %inheritable-properties;
  806. >
  807.  
  808. <!-- =============================================================== -->
  809. <!-- Document meta information - RenderX extension                   -->
  810. <!-- =============================================================== -->
  811.  
  812. <!ELEMENT rx:meta-info (rx:meta-field+)>
  813. <!ATTLIST rx:meta-info
  814.   xmlns:rx  CDATA #IMPLIED
  815. >
  816.  
  817. <!ELEMENT rx:meta-field EMPTY>
  818. <!ATTLIST  rx:meta-field
  819.     name CDATA #REQUIRED
  820.     value CDATA #REQUIRED
  821. >
  822.  
  823. <!ELEMENT rx:page-device EMPTY>
  824. <!ATTLIST  rx:page-device
  825.     input-tray CDATA #IMPLIED
  826.     output-tray CDATA #IMPLIED
  827.     manual-feed (true|false) #IMPLIED
  828.  
  829.     duplex (true|false) #IMPLIED
  830.     mirror-print (true|false) #IMPLIED
  831.     negative-print (true|false) #IMPLIED
  832.  
  833.     collate (true|false) #IMPLIED
  834.     number-copies CDATA #IMPLIED
  835. >
  836.  
  837. <!-- =============================================================== -->
  838. <!-- Color profile declarations                                      -->
  839. <!-- =============================================================== -->
  840.  
  841. <!ELEMENT fo:declarations (
  842.     fo:color-profile+
  843.   )
  844. >
  845.  
  846. <!ELEMENT fo:color-profile EMPTY >
  847.  
  848. <!ATTLIST fo:color-profile
  849.   src  CDATA  #REQUIRED
  850.   color-profile-name  CDATA #REQUIRED
  851.   rendering-intent  CDATA #IMPLIED
  852. >
  853.  
  854. <!-- =============================================================== -->
  855. <!-- Bookmarks - RenderX extension                                   -->
  856. <!-- =============================================================== -->
  857.  
  858. <!ELEMENT rx:outline (
  859.     rx:bookmark+
  860.   )
  861. >
  862. <!ATTLIST rx:outline
  863.   xmlns:rx  CDATA #IMPLIED
  864. >
  865.  
  866. <!ELEMENT rx:bookmark (
  867.     rx:bookmark-label, 
  868.     rx:bookmark*
  869.   ) 
  870. >
  871. <!ATTLIST rx:bookmark
  872.   internal-destination  CDATA  #IMPLIED
  873.   external-destination  CDATA  #IMPLIED
  874.   collapse-subtree  (true | false)  #IMPLIED
  875. >
  876.  
  877. <!ELEMENT rx:bookmark-label (#PCDATA) >
  878.  
  879.  
  880. <!-- =============================================================== -->
  881. <!-- Layout-master-set. Contains a set of page-masters. Neither of   -->
  882. <!-- its descendants generates any area, so no inherited elements    -->
  883. <!-- can be specified on it or on its children.                      -->
  884. <!-- Content model made more strict than in the draft, to enforce    -->
  885. <!-- that a page-sequence-master be always accompanied by at least   -->
  886. <!-- one simple-page-master.                                         -->
  887. <!-- =============================================================== -->
  888.  
  889.  
  890. <!ELEMENT fo:layout-master-set 
  891.   (
  892.     fo:page-sequence-master*, fo:simple-page-master,
  893.     ( fo:simple-page-master | fo:page-sequence-master )*
  894.   )  
  895. >
  896.  
  897. <!-- =============================================================== -->
  898. <!-- Page sequence master                                            -->
  899. <!-- =============================================================== -->
  900.  
  901. <!ELEMENT fo:page-sequence-master (
  902.     (
  903.       fo:single-page-master-reference
  904.     | fo:repeatable-page-master-reference
  905.     | fo:repeatable-page-master-alternatives
  906.     )+
  907.   )
  908. >
  909. <!ATTLIST fo:page-sequence-master
  910.   master-name  CDATA  #REQUIRED
  911. >
  912.  
  913. <!-- =============================================================== -->
  914. <!-- Sequence specifiers are predefined sequences of page masters    -->
  915. <!-- that are used by page sequence master to construct a desired    -->
  916. <!-- page collection.                                                -->
  917. <!-- =============================================================== -->
  918.  
  919. <!ELEMENT fo:single-page-master-reference    EMPTY>
  920. <!ATTLIST fo:single-page-master-reference
  921.   master-reference  CDATA  #REQUIRED
  922. >
  923.  
  924. <!ELEMENT fo:repeatable-page-master-reference    EMPTY>
  925. <!ATTLIST fo:repeatable-page-master-reference
  926.   master-reference  CDATA  #REQUIRED
  927.   maximum-repeats  CDATA  #IMPLIED
  928. >
  929.  
  930. <!ELEMENT fo:repeatable-page-master-alternatives  
  931.   ( fo:conditional-page-master-reference+ )
  932. >
  933. <!ATTLIST fo:repeatable-page-master-alternatives
  934.   maximum-repeats  CDATA  #IMPLIED
  935. >
  936.  
  937. <!ELEMENT fo:conditional-page-master-reference    EMPTY>
  938. <!ATTLIST fo:conditional-page-master-reference
  939.   master-reference  CDATA  #REQUIRED
  940.   page-position  ( first | last | rest | any | inherit )  #IMPLIED
  941.   odd-or-even  ( odd | even | any | inherit )  #IMPLIED
  942.   blank-or-not-blank  ( blank | not-blank | any | inherit )  #IMPLIED
  943. >
  944.  
  945. <!-- =============================================================== -->
  946. <!-- Simple page master defines a page layout. It does not           -->
  947. <!-- explicitly generate any content. Most of its properties are     -->
  948. <!-- local except for writing-mode and reference-orientation that    -->
  949. <!-- are inherited by the underlying region-* objects.               -->
  950. <!-- =============================================================== -->
  951.  
  952. <!-- NOTE. We could think about a common background/padding/border   -->
  953. <!-- for every page instance generated by the page master. For such  -->
  954. <!-- a scope, we may add borders/padding/background to its features. -->
  955. <!-- However, in the current version this is ruled out explicitly by -->
  956. <!-- the XSL specs.                                                  -->
  957.  
  958. <!ELEMENT fo:simple-page-master 
  959.   (
  960.     fo:region-body,
  961.     fo:region-before?,
  962.     fo:region-after?,
  963.     fo:region-start?,
  964.     fo:region-end?
  965.   )
  966. >
  967.  
  968. <!ATTLIST fo:simple-page-master
  969.   %margin-properties-CSS;
  970.   master-name  CDATA  #REQUIRED
  971.   page-height  CDATA  #IMPLIED
  972.   page-width  CDATA  #IMPLIED
  973.   size  CDATA  #IMPLIED
  974.   reference-orientation  ( 0 | 90 | 180 | 270 | -90 | -180 | -270  
  975.                          | 0deg  | 90deg   | 180deg  | 270deg 
  976.                          | -90deg | -180deg | -270deg | inherit )  #IMPLIED
  977.   writing-mode  ( lr-tb | rl-tb | tb-rl | lr | rl | tb | inherit ) #IMPLIED
  978. >
  979.  
  980.  
  981. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  982. <!-- Regions. The page instance is divided into subareas, whose      -->
  983. <!-- properties are described by the five region-* elements. These   -->
  984. <!-- elements by themselves do not generate any content.             -->
  985. <!-- Reference-orientation and writing-mode may be inherited from    -->
  986. <!-- the page master; all other features are local.                  -->
  987. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  988.  
  989. <!ENTITY % region-properties "
  990.   %border-padding-background-properties;
  991.   %area-properties;
  992.  
  993.   region-name  CDATA  #IMPLIED
  994. ">
  995.  
  996. <!-- =============================================================== -->
  997. <!-- Body region: middle of the page. Unlike side regions, this one  -->
  998. <!-- may have multiple columns.                                      -->
  999. <!-- [!] We have restricted margin properties to be margin-only,     -->
  1000. <!-- allowing no spaces. This is done because no clear semantics     -->
  1001. <!-- can be ascribed to single components of a space vector.         -->
  1002. <!-- =============================================================== -->
  1003.  
  1004. <!ELEMENT fo:region-body EMPTY>
  1005. <!ATTLIST fo:region-body
  1006.   %region-properties;
  1007.   %margin-properties-CSS;
  1008.   column-count  CDATA  #IMPLIED
  1009.   column-gap  CDATA  #IMPLIED
  1010. >
  1011.  
  1012. <!-- =============================================================== -->
  1013. <!-- Side regions: page edges. These regions have extent and         -->
  1014. <!-- precedence that is used to arbitrate corner conflicts. Side     -->
  1015. <!-- regions are viewed as frames, and may not have margins.         -->
  1016. <!-- Extent made obligatory: its default value of 0.0pt does not     -->
  1017. <!-- make much sense.                                                -->
  1018. <!-- =============================================================== -->
  1019.  
  1020. <!ENTITY % side-region-properties "
  1021.   %region-properties;
  1022.   extent  CDATA  #REQUIRED
  1023.   precedence  ( true | false | inherit )  #IMPLIED
  1024. ">
  1025.  
  1026. <!ELEMENT fo:region-before EMPTY>
  1027. <!ATTLIST fo:region-before %side-region-properties;>
  1028.  
  1029. <!ELEMENT fo:region-after EMPTY>
  1030. <!ATTLIST fo:region-after %side-region-properties;>
  1031.  
  1032. <!ELEMENT fo:region-start EMPTY>
  1033. <!ATTLIST fo:region-start %side-region-properties;>
  1034.  
  1035. <!ELEMENT fo:region-end EMPTY>
  1036. <!ATTLIST fo:region-end %side-region-properties;>
  1037.  
  1038. <!-- =============================================================== -->
  1039. <!-- Page sequence defines the order of choosing page masters to     -->
  1040. <!-- accomodate all the contents generated by its fo:flow and        -->
  1041. <!-- fo:static-content children, and the way of numbering them.      -->
  1042. <!-- =============================================================== -->
  1043.  
  1044. <!ELEMENT fo:page-sequence
  1045.   (
  1046.     fo:title?,
  1047.     fo:static-content*,
  1048.     fo:flow
  1049.   )
  1050. >
  1051. <!ATTLIST fo:page-sequence
  1052.   id  CDATA  #IMPLIED
  1053.   rx:key  CDATA  #IMPLIED
  1054.   master-reference  CDATA  #REQUIRED
  1055.  
  1056.   initial-page-number  CDATA  #IMPLIED
  1057.   force-page-count  ( auto | even | odd | end-on-even 
  1058.                     | end-on-odd | no-force | inherit)  #IMPLIED
  1059.  
  1060.   format  CDATA  #IMPLIED
  1061.   letter-value  ( auto | alphabetic | traditional  )  #IMPLIED
  1062.   grouping-separator  CDATA  #IMPLIED
  1063.   grouping-size  CDATA  #IMPLIED
  1064.  
  1065.   %inheritable-properties;
  1066. >
  1067.  
  1068. <!-- =============================================================== -->
  1069. <!-- Title may not contain out-of-lines.                             -->
  1070. <!-- =============================================================== -->
  1071.  
  1072. <!ELEMENT fo:title     
  1073.     ( #PCDATA 
  1074.   | %basic-inlines; 
  1075.   | %wrappers; )*
  1076. >
  1077.  
  1078. <!ATTLIST fo:title  %inheritable-properties;>
  1079.  
  1080.  
  1081. <!-- *************************************************************** -->
  1082. <!-- B. Element structure for content-bearing elements               --> 
  1083. <!-- *************************************************************** -->
  1084.  
  1085. <!-- =============================================================== -->
  1086. <!-- Flows. They are just sequences of blocks. 'flow-name' feature   -->
  1087. <!-- defines linkage of the flow to a region in the page master.     -->
  1088. <!-- =============================================================== -->
  1089.  
  1090. <!-- =============================================================== -->
  1091. <!-- An extension element, fo:flow-section, has been added in order  -->
  1092. <!-- to overcome limitations on multicolumn layout imposed by XSL FO -->
  1093. <!-- =============================================================== -->
  1094.  
  1095. <!ENTITY % flow-properties "
  1096.   id  CDATA  #IMPLIED    
  1097.   rx:key  CDATA  #IMPLIED
  1098.   flow-name  CDATA  #REQUIRED
  1099.   %inheritable-properties;
  1100. ">
  1101.  
  1102. <!ELEMENT fo:static-content (%blocks;)+ >
  1103. <!ATTLIST fo:static-content %flow-properties; >
  1104.  
  1105. <!ELEMENT fo:flow (%blocks; | rx:flow-section)+ >
  1106. <!ATTLIST fo:flow %flow-properties; >
  1107.  
  1108. <!-- Extension element. Acts like a top-level block -->
  1109. <!-- with multiple columns.                         -->
  1110.  
  1111. <!ELEMENT rx:flow-section (%blocks;)+ >
  1112. <!ATTLIST rx:flow-section
  1113.   column-count CDATA #IMPLIED
  1114.   column-gap CDATA #IMPLIED
  1115.   %block-properties; 
  1116. >
  1117.  
  1118. <!-- =============================================================== -->
  1119. <!-- Block is the base element for all content areas. Besides        -->
  1120. <!-- properties used to format the block itself, it also conveys     -->
  1121. <!-- formatting information to its inline-level children.            -->
  1122. <!-- =============================================================== -->
  1123.  
  1124. <!ELEMENT fo:block (
  1125.     #PCDATA
  1126.   | fo:initial-property-set
  1127.   | %basic-inlines; 
  1128.   | %basic-blocks; 
  1129.   | %out-of-lines; 
  1130.   | %wrappers; 
  1131.   )*
  1132. >
  1133. <!ATTLIST fo:block %block-properties;>
  1134.  
  1135. <!-- =============================================================== -->
  1136. <!-- Block container                                                 -->
  1137. <!-- =============================================================== -->
  1138. <!ELEMENT fo:block-container ( %blocks; )+ >
  1139. <!ATTLIST fo:block-container %block-properties;>
  1140.  
  1141. <!-- *************************************************************** -->
  1142. <!-- Inline elements                                                 --> 
  1143. <!-- *************************************************************** -->
  1144.  
  1145. <!-- =============================================================== -->
  1146. <!-- Unicode bidi-override                                           -->
  1147. <!-- =============================================================== -->
  1148.  
  1149. <!ELEMENT fo:bidi-override ( %inlines; )*>
  1150. <!ATTLIST fo:bidi-override %inline-properties;>
  1151.  
  1152. <!-- =============================================================== -->
  1153. <!-- Single character                                                -->
  1154. <!-- =============================================================== -->
  1155.  
  1156. <!ELEMENT fo:character EMPTY>
  1157. <!ATTLIST fo:character
  1158.   character  CDATA  #REQUIRED
  1159.   %empty-inline-properties;
  1160. >
  1161.  
  1162. <!-- =============================================================== -->
  1163. <!-- Initial property set specifies properties for one or more lines -->
  1164. <!-- =============================================================== -->
  1165.  
  1166. <!ELEMENT fo:initial-property-set EMPTY>
  1167. <!ATTLIST fo:initial-property-set 
  1168.   %empty-inline-properties; 
  1169. >
  1170.  
  1171. <!-- =============================================================== -->
  1172. <!-- External graphic                                                -->
  1173. <!-- =============================================================== -->
  1174.  
  1175. <!ELEMENT fo:external-graphic EMPTY >
  1176. <!ATTLIST fo:external-graphic
  1177.   %graphic-properties;
  1178.   src  CDATA  #IMPLIED
  1179. >
  1180.  
  1181. <!-- =============================================================== -->
  1182. <!-- In-stream graphic                                               -->
  1183. <!-- =============================================================== -->
  1184.  
  1185. <!ELEMENT fo:instream-foreign-object ANY>
  1186. <!ATTLIST fo:instream-foreign-object %graphic-properties;>
  1187.  
  1188.  
  1189. <!-- =============================================================== -->
  1190. <!-- An element to mark a point in the XML output (RenderX extension)-->
  1191. <!-- =============================================================== -->
  1192.  
  1193. <!ELEMENT rx:pinpoint EMPTY>
  1194. <!ATTLIST rx:pinpoint
  1195.   value CDATA  #REQUIRED
  1196.  
  1197.   %accessibility-properties;
  1198.   %relative-position-properties;
  1199.   %area-alignment-properties-inline;
  1200.   %keeps-and-breaks-properties-atomic;
  1201. >
  1202.  
  1203. <!-- =============================================================== -->
  1204. <!-- Inline                                                          -->
  1205. <!-- =============================================================== -->
  1206.  
  1207. <!ELEMENT fo:inline ( %mixed-level; )*>
  1208. <!ATTLIST fo:inline %inline-properties;>
  1209.  
  1210. <!-- =============================================================== -->
  1211. <!-- Inline container                                                -->
  1212. <!-- =============================================================== -->
  1213.  
  1214. <!ELEMENT fo:inline-container ( %blocks; )*>
  1215. <!ATTLIST fo:inline-container %inline-properties;>
  1216.  
  1217. <!-- =============================================================== -->
  1218. <!-- Leader                                                          -->
  1219. <!-- =============================================================== -->
  1220.  
  1221. <!ELEMENT fo:leader ( %inlines; )*>
  1222. <!ATTLIST fo:leader 
  1223.   %inline-properties;
  1224.   >
  1225.  
  1226. <!-- =============================================================== -->
  1227. <!-- Page Number                                                     -->
  1228. <!-- =============================================================== -->
  1229.  
  1230. <!ELEMENT fo:page-number EMPTY>
  1231. <!ATTLIST fo:page-number %empty-inline-properties;>
  1232.  
  1233. <!-- =============================================================== -->
  1234. <!-- Page number citation                                            -->
  1235. <!-- =============================================================== -->
  1236.  
  1237. <!ELEMENT fo:page-number-citation EMPTY>
  1238. <!ATTLIST fo:page-number-citation
  1239.   %empty-inline-properties;
  1240.   ref-id  CDATA  #REQUIRED 
  1241. >
  1242.  
  1243. <!-- =============================================================== -->
  1244. <!-- Page number list - index entry                                  -->
  1245. <!-- =============================================================== -->
  1246.  
  1247. <!ELEMENT rx:page-index EMPTY>
  1248. <!ATTLIST rx:page-index
  1249.   %empty-inline-properties;
  1250.   ref-key  CDATA  #REQUIRED 
  1251.   list-separator  CDATA  #IMPLIED
  1252.   range-separator  CDATA  #IMPLIED
  1253.   merge-subsequent-page-numbers  CDATA  #IMPLIED
  1254. >
  1255.  
  1256.  
  1257.  
  1258. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1259. <!-- Formatting objects for tables.                                  -->
  1260. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1261.  
  1262. <!-- =============================================================== -->
  1263. <!-- Table & Caption is a wrapper to all the stuff pertinent to a    -->
  1264. <!-- given table. It generates a block consisting of two subblocks:  -->
  1265. <!-- one for the caption, another one for the table itself. The      -->
  1266. <!-- placement of these two blocks is controlled by the              -->
  1267. <!-- 'caption-side' property: if  caption-side="before"|"after" (or  -->
  1268. <!-- their absolute orientation equivalents), the two blocks are     -->
  1269. <!-- drawn one after another; if it is "start"|"end", then the       -->
  1270. <!-- caption is displayed on the correspondent side of the table.    -->
  1271. <!-- In this case, the relative alignment of the two blocks is given -->
  1272. <!-- by the 'relative-align'/'display-align' property.               -->
  1273. <!--                                                                 -->
  1274. <!-- =============================================================== -->
  1275.  
  1276. <!ELEMENT fo:table-and-caption (
  1277.     fo:table-caption?,
  1278.     fo:table
  1279.   )
  1280. >
  1281.  
  1282. <!ATTLIST fo:table-and-caption %block-properties;>
  1283.  
  1284.  
  1285. <!-- =============================================================== -->
  1286. <!-- Table caption is an area container.                             -->
  1287. <!-- =============================================================== -->
  1288.  
  1289. <!ELEMENT fo:table-caption ( %blocks; )+ >
  1290. <!ATTLIST fo:table-caption %block-properties;>
  1291.  
  1292.  
  1293. <!-- =============================================================== -->
  1294. <!-- fo:table is the basic element for all tables. All the contents  -->
  1295. <!-- placed inside it is distributed over a single rectangular grid  -->
  1296. <!-- of rows and columns.                                            -->
  1297. <!-- =============================================================== -->
  1298.  
  1299.  
  1300. <!ELEMENT fo:table (
  1301.     fo:table-column*,
  1302.     fo:table-header?,
  1303.     fo:table-footer?,
  1304.     fo:table-body+
  1305.   )
  1306. >
  1307. <!ATTLIST fo:table  %block-properties;>
  1308.  
  1309.  
  1310. <!-- =============================================================== -->
  1311. <!-- Table column specifies common properties to ascribe to all      -->
  1312. <!-- cells in a column *or a group of columns*. Note that, if both   -->
  1313. <!-- 'number-columns-repeated' and 'number-columns-spanned' exceed   -->
  1314. <!-- 1, the column counter is increased by 'number-columns-spanned'. -->
  1315. <!-- it means that you only set properties for columns:              --> 
  1316. <!--      'column-number'                                            -->
  1317. <!--      'column-number' + 'number-columns-spanned'                 -->
  1318. <!--      'column-number' + 2 * 'number-columns-spanned'             -->
  1319. <!-- and so on, leaving default properties for intermediate columns. -->
  1320. <!-- =============================================================== -->
  1321.  
  1322. <!ELEMENT fo:table-column      EMPTY >
  1323. <!ATTLIST fo:table-column
  1324.   column-number  CDATA  #IMPLIED
  1325.   column-width  CDATA  #IMPLIED
  1326.   number-columns-repeated  CDATA  #IMPLIED
  1327.   number-columns-spanned  CDATA  #IMPLIED
  1328.   %inheritable-properties;
  1329. >
  1330.  
  1331.  
  1332. <!-- =============================================================== -->
  1333. <!-- Table header, table footer, and table body are wrappers for     -->
  1334. <!-- groups of rows. They contain either one or more fo:table-rows,  -->
  1335. <!-- or one or more fo:table-cells; in the latter case, row breaks   -->
  1336. <!-- are specified in the cells by 'starts-row'/'ends-row'.          --> 
  1337. <!-- All these elements are identical both in the content structure  -->
  1338. <!-- and in the attributes.                                          -->
  1339. <!-- =============================================================== -->
  1340.  
  1341. <!ENTITY % row-group " fo:table-row+ | fo:table-cell+ ">
  1342.  
  1343. <!ELEMENT fo:table-header ( %row-group; ) >
  1344. <!ATTLIST fo:table-header
  1345.   id  CDATA  #IMPLIED 
  1346.   rx:key  CDATA  #IMPLIED
  1347.   %inheritable-properties; 
  1348. >
  1349.  
  1350. <!ELEMENT fo:table-footer ( %row-group;) >
  1351. <!ATTLIST fo:table-footer
  1352.   id  CDATA  #IMPLIED 
  1353.   rx:key  CDATA  #IMPLIED
  1354.   %inheritable-properties; 
  1355. >
  1356.  
  1357. <!ELEMENT fo:table-body ( %row-group; )>
  1358. <!ATTLIST fo:table-body
  1359.   id  CDATA  #IMPLIED 
  1360.   rx:key  CDATA  #IMPLIED
  1361.   %inheritable-properties; 
  1362. >
  1363.  
  1364.  
  1365. <!-- =============================================================== -->
  1366. <!-- Table row.                                                      -->
  1367. <!-- =============================================================== -->
  1368.  
  1369. <!ELEMENT fo:table-row ( fo:table-cell+ ) >
  1370. <!ATTLIST fo:table-row
  1371.   id  CDATA  #IMPLIED 
  1372.   rx:key  CDATA  #IMPLIED
  1373.   %inheritable-properties; 
  1374. >
  1375.  
  1376. <!-- =============================================================== -->
  1377. <!-- Table cell.                                                     -->
  1378. <!-- =============================================================== -->
  1379.  
  1380. <!ELEMENT fo:table-cell ( %blocks; )+ >
  1381. <!ATTLIST fo:table-cell
  1382.   %block-properties; 
  1383.  
  1384.   column-number  CDATA  #IMPLIED
  1385.   ends-row  ( true | false )  #IMPLIED
  1386.   number-columns-spanned  CDATA  #IMPLIED
  1387.   number-rows-spanned  CDATA  #IMPLIED
  1388.   starts-row  ( true | false )  #IMPLIED
  1389. >
  1390.  
  1391. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1392. <!-- Formatting objects for lists.                                   -->
  1393. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1394.  
  1395. <!-- =============================================================== -->
  1396. <!-- List block is a block, with some extra features to control the  -->
  1397. <!-- disposition of list items.                                      -->
  1398. <!-- =============================================================== -->
  1399.  
  1400. <!ELEMENT fo:list-block ( fo:list-item+ ) >
  1401. <!ATTLIST fo:list-block %block-properties;>
  1402.  
  1403. <!-- =============================================================== -->
  1404. <!-- List item is a coupling of item label and item body.            -->
  1405. <!-- =============================================================== -->
  1406.  
  1407. <!ELEMENT fo:list-item ( fo:list-item-label, fo:list-item-body ) >
  1408. <!ATTLIST fo:list-item %block-properties;>
  1409.  
  1410.  
  1411. <!-- =============================================================== -->
  1412. <!-- List item label and list item body                              -->
  1413. <!-- =============================================================== -->
  1414.  
  1415. <!ELEMENT fo:list-item-label ( %blocks; )+ >
  1416. <!ATTLIST fo:list-item-label %block-properties;>
  1417.  
  1418. <!ELEMENT fo:list-item-body ( %blocks;)+ >
  1419. <!ATTLIST fo:list-item-body %block-properties;>
  1420.  
  1421.  
  1422. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1423. <!-- Out-of-lines.                                                   -->
  1424. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1425.  
  1426. <!-- =============================================================== -->
  1427. <!-- Floats and footnotes resemble containers. Accordingly, we treat -->
  1428. <!-- them as block sequences.                                        -->
  1429. <!-- =============================================================== -->
  1430.  
  1431. <!ELEMENT fo:float ( %blocks; )+ >
  1432. <!ATTLIST fo:float %block-properties;>
  1433.  
  1434.  
  1435. <!ELEMENT fo:footnote (
  1436.   fo:inline,
  1437.   fo:footnote-body 
  1438.   )
  1439. >
  1440.  
  1441. <!ATTLIST fo:footnote %block-properties;>
  1442.  
  1443.  
  1444. <!ELEMENT fo:footnote-body ( %blocks; )+ >
  1445. <!ATTLIST fo:footnote-body %block-properties;>
  1446.  
  1447.  
  1448. <!-- =============================================================== -->
  1449. <!-- Simple link. From the formatting point of view, it's nothing    -->
  1450. <!-- but a regular inline sequence.                                  -->
  1451. <!-- =============================================================== -->
  1452.  
  1453. <!ELEMENT fo:basic-link ( %mixed-level; )* >
  1454. <!ATTLIST fo:basic-link
  1455.   %inline-properties;
  1456.  
  1457.   external-destination  CDATA  #IMPLIED
  1458.   internal-destination  CDATA  #IMPLIED
  1459.   indicate-destination  ( true | false )  #IMPLIED
  1460.   show-destination  ( replace | new )  #IMPLIED
  1461.   destination-placement-offset  CDATA  #IMPLIED
  1462.   target-processing-context  CDATA  #IMPLIED
  1463.   target-presentation-context  CDATA  #IMPLIED
  1464.   target-stylesheet  CDATA  #IMPLIED
  1465. >
  1466.  
  1467.  
  1468. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1469. <!-- Wrappers and Markers.                                           -->
  1470. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1471.  
  1472. <!-- =============================================================== -->
  1473. <!-- Wrapper. This may be useful but breaks every effort to validate -->
  1474. <!-- content models for blocks and inlines.                          -->
  1475. <!-- =============================================================== -->
  1476.  
  1477. <!ELEMENT fo:wrapper ( %mixed-level; )* >
  1478. <!ATTLIST fo:wrapper 
  1479.   id  CDATA  #IMPLIED
  1480.   rx:key  CDATA  #IMPLIED
  1481.   %inheritable-properties; 
  1482. >
  1483.  
  1484. <!-- =============================================================== -->
  1485. <!-- Marker. This element may embrace any content but cannot pass    -->
  1486. <!-- properties to its children; so, it may not have features other  -->
  1487. <!-- than marker-class-name.                                         -->
  1488. <!-- =============================================================== -->
  1489.  
  1490. <!ELEMENT fo:marker ( %mixed-level; )* >
  1491. <!ATTLIST fo:marker  
  1492.   marker-class-name  CDATA  #IMPLIED
  1493. >
  1494.  
  1495. <!-- =============================================================== -->
  1496. <!-- Marker retrieval.                                               -->
  1497. <!-- =============================================================== -->
  1498.  
  1499. <!ELEMENT fo:retrieve-marker EMPTY>
  1500. <!ATTLIST fo:retrieve-marker  
  1501.   retrieve-class-name  CDATA  #IMPLIED
  1502.   retrieve-position  ( first-starting-within-page 
  1503.                      | first-including-carryover 
  1504.                      | last-starting-within-page 
  1505.                      | last-ending-within-page )  #IMPLIED
  1506.   retrieve-boundary  ( page | page-sequence | document )  #IMPLIED
  1507. >
  1508.  
  1509. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1510. <!-- Multistate stuff. This section is the least developed in the    -->
  1511. <!-- whole DTD, and most solutions are arbitrary. We beg thy pardon. -->
  1512. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1513.  
  1514. <!-- =============================================================== -->
  1515. <!-- Switch. This is a pure logical operator; no formatting may be   -->
  1516. <!-- conveyed through it.                                            -->
  1517. <!-- =============================================================== -->
  1518.  
  1519. <!ELEMENT fo:multi-switch ( fo:multi-case )+ >
  1520. <!ATTLIST fo:multi-switch
  1521.   %inheritable-properties; 
  1522.  
  1523.   id  CDATA  #IMPLIED
  1524.   rx:key  CDATA  #IMPLIED
  1525.   auto-restore  ( true | false )  #IMPLIED
  1526. >
  1527.  
  1528. <!-- =============================================================== -->
  1529. <!-- Single case. Block-level formatting may be conveyed.            -->
  1530. <!-- =============================================================== -->
  1531.  
  1532. <!ELEMENT fo:multi-case ( %mixed-level; )* >
  1533.  
  1534. <!ATTLIST fo:multi-case
  1535.   %inheritable-properties; 
  1536.  
  1537.   id  CDATA  #IMPLIED
  1538.   rx:key  CDATA  #IMPLIED
  1539.   starting-state  CDATA  #IMPLIED
  1540.   case-name  CDATA  #IMPLIED
  1541.   case-title  CDATA  #IMPLIED
  1542. >
  1543.  
  1544. <!-- =============================================================== -->
  1545. <!-- Toggle. This is a typical inline.                               -->
  1546. <!-- =============================================================== -->
  1547.  
  1548. <!ELEMENT fo:multi-toggle ( %inlines; )*>
  1549. <!ATTLIST fo:multi-toggle
  1550.   %inheritable-properties; 
  1551.  
  1552.   id  CDATA  #IMPLIED
  1553.   rx:key  CDATA  #IMPLIED
  1554.   switch-to  CDATA  #IMPLIED
  1555. >
  1556.  
  1557.  
  1558. <!-- =============================================================== -->
  1559. <!-- Multi-properties is listed among block-level elements.          -->
  1560. <!-- Formatting common to all property sets can be specified here;   -->
  1561. <!-- we expect it to be block-level only.                            -->
  1562. <!-- =============================================================== -->
  1563.  
  1564.  
  1565. <!ELEMENT fo:multi-properties 
  1566.   (
  1567.     fo:multi-property-set+,
  1568.     fo:wrapper
  1569.   )
  1570. >
  1571. <!ATTLIST fo:multi-properties %block-properties;>
  1572.  
  1573. <!-- =============================================================== -->
  1574. <!-- Multi property set. Since these are properties of a             -->
  1575. <!-- fo:multi-properties that is considered a block, we accept only  -->
  1576. <!-- block properties here.                                          -->
  1577. <!-- =============================================================== -->
  1578.  
  1579. <!ELEMENT fo:multi-property-set EMPTY>
  1580. <!ATTLIST fo:multi-property-set
  1581.   %block-properties;
  1582.   active-state  ( link | visited | active | hover | focus )  #REQUIRED
  1583. >
  1584.